////////////////////////////////////////////////////////////////////////////////

#ifndef _SHAPESFACTORY_H_
#include "shapesfactory.h"
#endif

////////////////////////////////////////////////////////////////////////////////


ShapesFactory* ShapesFactory::m_Instance = NULL;


////////////////////////////////////////////////////////////////////////////////


ShapesFactory* ShapesFactory::GetInstance()
{
    if (!m_Instance)
        m_Instance = new ShapesFactory();

    return m_Instance;
}


////////////////////////////////////////////////////////////////////////////////


ShapesFactory::ShapesFactory()
: m_Player(10),
  m_Bullet(8),
  m_Wall( GetWallPoints() ),
  m_Border( GetBorderPoints() )
{
}


////////////////////////////////////////////////////////////////////////////////


ShapesFactory::~ShapesFactory()
{
}


////////////////////////////////////////////////////////////////////////////////


PE::Points ShapesFactory::GetWallPoints() const
{
    PE::Points points;
    points, PE::Point(-25, -15), PE::Point(-25, 15), PE::Point(25, 15), PE::Point(25, -15);
    return points;
}


////////////////////////////////////////////////////////////////////////////////


PE::Points ShapesFactory::GetBorderPoints() const
{
    PE::Points points;
    points, PE::Point(-320, -240), PE::Point(-320, 240), PE::Point(320, 240), PE::Point(320, -240);
    return points;
}


////////////////////////////////////////////////////////////////////////////////


const PE::Shape* ShapesFactory::GetPlayerShape() const
{
    return &m_Player;
}


////////////////////////////////////////////////////////////////////////////////


const PE::Shape* ShapesFactory::GetBulletShape() const
{
    return &m_Bullet;
}


////////////////////////////////////////////////////////////////////////////////


const PE::Shape* ShapesFactory::GetWallShape() const
{
    return &m_Wall;
}


////////////////////////////////////////////////////////////////////////////////


const PE::Shape* ShapesFactory::GetBorderShape() const
{
    return &m_Border;
}


////////////////////////////////////////////////////////////////////////////////
